﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WypożyczalniaV1
{
    public partial class Form1 : Form
    {
        
        public Form1(string konf)
        {
            this.configuracja = konf;
            InitializeComponent();
        }
        private string configuracja;
        private Zapytania zap;
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                DataSet ds = new DataSet();
                zap = new Zapytania(configuracja);
                ds = zap.gen_tabel("SELECT idCzytelnicy AS Idetyfikator,Imie, Nazwisko FROM czytelnicy", "czytelnicy");
                dataGridView1.DataSource = ds;
                dataGridView1.DataMember = "czytelnicy";
                Edycja.HeaderText = "Edycja";
                Edycja.Text = "Edytuj";
                /**
                 * 
                 * Pokazywanie danych dla okna ksiązki 
                 * 
                 */
                
                generowanie_tabel_dla_autorow();
                /*
                 * Pola Visible
                 */
                groupBox7.Visible = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
    
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Dodaj_Czytelnika form = new Dodaj_Czytelnika(this.configuracja);
            form.Show();
            form.Text = "Dodaj czytelnika";
        }

        private void button5_Click(object sender, EventArgs e)
        {
            try
            {
                DataSet ds = new DataSet();
                zap = new Zapytania(configuracja);
                if (radioButton2.Checked == true)
                {
                    ds = zap.gen_tabel("SELECT * FROM czytelnicy WHERE LIKE Nazwisko='" + textBox1.Text + "';", "czytelnicy");
                    dataGridView1.DataSource = ds;
                    dataGridView1.DataMember = "czytelnicy";
                }
                if (radioButton1.Checked == true)
                {
                    ds = zap.gen_tabel("SELECT * FROM czytelnicy WHERE KodEan8='" + textBox1.Text + "';", "czytelnicy");
                    dataGridView1.DataSource = ds;
                    dataGridView1.DataMember = "czytelnicy";
                }
                if (radioButton3.Checked == true)
                {
                    ds = zap.gen_tabel("SELECT * FROM czytelnicy", "czytelnicy");
                    dataGridView1.DataSource = ds;
                    dataGridView1.DataMember = "czytelnicy";
                }
                dataGridView1.Columns[2].Visible = false;
                dataGridView1.Columns[5].Visible = false;
                dataGridView1.Columns[6].Visible = false;
                dataGridView1.Columns[6].Visible = false;
                dataGridView1.Columns[12].Visible = false;
                dataGridView1.Columns[3].HeaderText = "Imię czytelnika";
                dataGridView1.Columns[4].HeaderText = "Nazwisko czytelnika";
                dataGridView1.Columns[6].HeaderText = "Kod Pocztowy";
                dataGridView1.Columns[7].HeaderText = "Miejscowość";
                dataGridView1.Columns[8].HeaderText = "Ulica i numer";


                textBox1.Clear();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

 

        private void button7_Click(object sender, EventArgs e)
        {
            Dodaj_Autora formAutor = new Dodaj_Autora(this.configuracja);
            formAutor.Show();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            Dodaj_Ksiazka formaKsiazka = new Dodaj_Ksiazka(this.configuracja);
            formaKsiazka.Show();
        }
        void Obsluga_pola_2()
        {
            //Opcje główne
            if (kpb_radioButton4.Checked == true)
            {               
            }
            if (kpb_radioButton5.Checked == true)
            {
                #region Książki
                if (kpb_radioButton7.Checked == true)
                {
                    DataSet ds = zap.gen_tabel("SELECT * FROM books;", "books");
                    dataGridView2.DataSource = ds;
                    dataGridView2.DataMember = "books";
                }


                #endregion
            }
            if (kpb_radioButton6.Checked == true)
            {
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                generowanie_tabel_dla_autorow();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void kpb_radioButton7_CheckedChanged(object sender, EventArgs e)
        {

        }
        #region Wyswietl Autorzy
      
        #endregion

        #region Obsługa Pól datagridview

        private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            int nrWiersza = dataGridView2.SelectedCells[0].RowIndex;
            int id = int.Parse(dataGridView2[2, nrWiersza].Value.ToString());
            
            if (e.ColumnIndex == 0)
            {
                if (kpb_radioButton4.Checked == true)
                {
                    DialogResult resul = MessageBox.Show("Czy chesz edytować Autora: " + zap.Autor(id), "Edytuj", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (resul == DialogResult.Yes)
                    {
                        try
                        {
                            Dodaj_Autora edycja_autora = new Dodaj_Autora(configuracja);
                            edycja_autora.Show();
                            edycja_autora.Edycja(id);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.ToString());
                        }

                    }
                }
                if (kpb_radioButton5.Checked == true)
                {
                    DialogResult resul = MessageBox.Show("Czy chesz edytować książkę pt.: " + zap.Autor(id), "Edytuj", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (resul == DialogResult.Yes)
                    {
                        //tu wpisz kod edyji danych
                    }
                }
            }
            if (e.ColumnIndex == 1)
            {
                if (kpb_radioButton4.Checked == true)
                {
                    DialogResult resul = MessageBox.Show("Czy chesz usunąć danego Autora: " + zap.Autor(id), "Edytuj", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (resul == DialogResult.Yes)
                    {
                        string zapytanie = "SELECT * FROM Autorbooks WHERE idAutorzy='"+ id +"'";
                        if (zap.sprawdz(zapytanie) == true)
                        {
                            MessageBox.Show("Tego Autora nie można usunąć najpierw usuń wszystkie książki tego autora");
                        }
                        else
                        {
                            try
                            {
                                zap.Dodaj_pozycje("DELETE FROM autorzy WHERE idAutorzy=" + id);
                                refresh();
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show(ex.ToString());
                            }
                        }
                    }
                }
                if (kpb_radioButton5.Checked == true)
                {
                    try
                    {
                       // MessageBox.Show(id.ToString());
                        DialogResult resul = MessageBox.Show("Czy chesz usunąć książkę", "Usuń", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                        if (resul == DialogResult.Yes)
                        {
                            zap.Dodaj_pozycje("DELETE FROM autorzy WHERE idAutorzy=" + id);

                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
                }
            }
        }
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                int nrWiersza = dataGridView1.SelectedCells[0].RowIndex;
                int id = int.Parse(dataGridView1[2, nrWiersza].Value.ToString());
                string czytelnik = zap.czytelnik(id);
                if (e.ColumnIndex == 0)
                {

                    DialogResult resul;
                    resul = MessageBox.Show("Czy chcesz edytować konto: " + czytelnik, "Edycja", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (resul == DialogResult.Yes)
                    {
                        Dodaj_Czytelnika formaDodaj = new Dodaj_Czytelnika(configuracja);
                        formaDodaj.Text = "Edycja Konta czytelnika: " + czytelnik;
                        formaDodaj.edycja(id);
                        formaDodaj.Show();
                    }

                }
                if (e.ColumnIndex == 1)
                {
                    DialogResult result = MessageBox.Show("Czy chcesz usunąć konto", "Usuń", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (result == DialogResult.Yes)
                    {
                        zap.Dodaj_pozycje("DELETE FROM czytelnicy WHERE idCzytelnicy='" + id + "';");
                        refresh();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
        #endregion

        private void generowanie_tabel_dla_autorow()
        {
            DataSet ds = new DataSet();
            if (kpb_radioButton7.Checked == true)
            {
                ds = zap.gen_tabel("SELECT * FROM Autorzy;", "Autorzy");
                dataGridView2.DataSource = ds;
                dataGridView2.DataMember = "Autorzy";
            }
            if (kpb_radioButton8.Checked == true)
            {
                string zapytanie = "SELECT idAutorzy, Imie, Nazwisko, count(idAutorzy) AS 'Ilość Książek' FROM WYPORZYCZALNIA.Autorzy JOIN WYPORZYCZALNIA.autorbooks USING(idAutorzy) GROUP BY idAutorzy";
                ds = zap.gen_tabel(zapytanie, "Autorzy");
                dataGridView2.DataSource = ds;
                dataGridView2.DataMember = "Autorzy";
            }
            dataGridView2.Columns[2].Visible = false;
        }
        private void kpb_radioButton4_CheckedChanged(object sender, EventArgs e)
        {
            if (kpb_radioButton4.Checked == true)
            {
                groupBox7.Visible = false;
                groupBox5.Visible = true;
            }
        }
        private void kpb_radioButton5_CheckedChanged(object sender, EventArgs e)
        {
            if (kpb_radioButton5.Checked == true)
            {
                groupBox7.Visible = true;
                groupBox5.Visible = false;

            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            string zapytanie = "SELECT idBooks, Tytul, p.Imie, p.Nazwisko, ISBN, Wydanie, Oprawa FROM Books JOIN autorbooks USING (idBooks) JOIN autorzy p USING(idAutorzy)";
            DataSet oset = new DataSet();
            oset = zap.gen_tabel(zapytanie, "books");
            dataGridView2.DataSource = oset;
            dataGridView2.DataMember = "books";
        }
        #region funkcje
        public void refresh()
        {
            if (kpb_radioButton4.Checked == true)
            {
                string zapytanie = "SELECT * FROM autorzy";
                DataSet oset = new DataSet();
                oset = zap.gen_tabel(zapytanie, "books");
                dataGridView2.DataSource = oset;
                dataGridView2.DataMember = "books";
            }
            if (kpb_radioButton5.Checked == true)
            {
                string zapytanie = "SELECT idBooks, Tytul, p.Imie, p.Nazwisko, ISBN, Wydanie, Oprawa FROM Books JOIN autorbooks USING (idBooks) JOIN autorzy p USING(idAutorzy)";
                DataSet oset = new DataSet();
                oset = zap.gen_tabel(zapytanie, "books");
                dataGridView2.DataSource = oset;
                dataGridView2.DataMember = "books";
            }
        }

        public void Gen_Tabeli_2(string query)
        {
            
        }
        #endregion

        private void radioButton3_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void radioButton4_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton4.Checked == true)
            {
                textBox2.Visible = true;
            }
            else
            {
                textBox2.Visible = false;
            }
        }

        private void button9_Click(object sender, EventArgs e)
        {
            Dodaj_Egzemplarz egzemparz = new Dodaj_Egzemplarz(configuracja);
            egzemparz.Show();
        }
        #region tabcontrol odnosnie wyorzyczeń oraz oddań

        //Zmienne;
        private int idCzytelnika;
        private DataSet ods;
        private void wykonaj_Click(object sender, EventArgs e)
        {
            //zmienne
            string query = "SELECT * FROM czytelnicy WHERE kodEan8='" + textBox3.Text + "';";
            //Spawdzam czy podany czytelnik istneje
            if (zap.sprawdz(query) == true)
            {
                //Jeżeli istnieje to:
                textBox3.Enabled = false;
                wykonaj.Enabled = false;
                radioButton6.Visible = true;
                radioButton7.Visible = true;
                query = "SELECT idCzytelnicy FROM czytelnicy WHERE KodEan8=" + textBox3.Text + ";";
                idCzytelnika = zap.identyfikator(query);
                MessageBox.Show(idCzytelnika.ToString());
                Gen_Tabel_3();

            }
            else
            {
                MessageBox.Show("Podany czytelnik nie istnieje\nMożesz go dodać");
            }
           
        }
        private void Gen_Tabel_3()
        {
            string query;
            query = "SELECT C.Imie, C.Nazwisko, B.tytul, data_wyp, data_dk FROM wypozyczenie JOIN czytelnicy C USING(idCzytelnicy) JOIN egzemplarz USING(idEgzemplarz) JOIN books B USING(idBooks)  WHERE idCzytelnicy=" + idCzytelnika + ";";
            this.ods = new DataSet();
            this.ods = zap.gen_tabel(query, "Wypozyczenie");
            dataGridView3.DataSource = ods;
            dataGridView3.DataMember = "Wypozyczenie";

        }
        #endregion

        private void radioButton6_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void groupBox8_Enter(object sender, EventArgs e)
        {

        }

        private Boolean spr_wk(string Ean8)
        {
            string zap1 = "SELECT C.idBooks FROM wypozyczenie JOIN egzemplarz USING(idEgzemplarz) JOIN books C USING(idBooks)";
            string zap2 = "SELECT count(idEgzemplarz) FROM wypozyczenie";
            string zap3 = "SELECT idBooks FROM egzemplarz WHERE KodEan8="+ Ean8;
            int[] tablica = zap.tab(zap1, zap2);
            int idBooks = zap.identyfikator(zap3);
            int n = tablica.Length;
            for (int i = 0; i < n; i++)
            {
                if (idBooks == tablica[i])
                {
                    return true;
                }
            }
            return false;

        }

        private void button4_Click(object sender, EventArgs e)
        {
            try
            {
                //Wypozyczenie;
                //spr_wk(textBox4.Text);
                string zapytanie1 = "SELECT C.idBooks FROM wypozyczenie JOIN egzemplarz USING(idEgzemplarz) JOIN books C USING(idBooks) WHERE idBooks=(SELECT L.idbooks FROM egzemplarz JOIN books L USING(idBooks) WHERE KodEan8='" + textBox4.Text + "') AND idCzytelnicy='" + idCzytelnika + "';";
                if (zap.sprawdz(zapytanie1) == false) //sprawdzamy czy masz już wypozyczoną tą samą książkę
                {
                    string query = "SELECT idEgzemplarz FROM egzemplarz WHERE KodEan8=" + textBox4.Text + " AND Dostep='Dostępna';"; //stpawdzamy czy jest dostepny
                    if (zap.sprawdz(query) == true)
                    {
                        string spr = "SELECT * FROM egzemplarz WHERE KodEan8=" + textBox4.Text + ";";  //Sprawdzamy czy dany egzemplarz wogóle istnieje
                        if (zap.sprawdz(spr) == true)
                        {
                            string query1 = "SELECT value_c FROM config WHERE type_c='ik'";
                            int ilosc_ksiazek_do_wyporzyczenia = zap.identyfikator(query1);
                            query1 = "SELECT count(idCzytelnicy) FROM wypozyczenie";
                            int ilosc_ksizek_czytelnika = zap.identyfikator(query1);
                            if (ilosc_ksizek_czytelnika == ilosc_ksiazek_do_wyporzyczenia)
                            {
                                MessageBox.Show("Czytelnik nie może wypożyczyć więcej książek");
                                //Wstaw kod powrotu
                                Clear_wyp();
                            }
                            else
                            {
                                //Jeżeli istniej to wykonuj dalej
                                int idEgzemplarz = zap.identyfikator(query);
                                DateTime dzisiaj = Convert.ToDateTime(DateTime.Now.ToShortDateString());
                                DateTime do_oddania = DateTime.Now.AddMonths(3);
                                //Dodanie do bazy wyporzyczonego
                                query = "INSERT INTO wypozyczenie(idCzytelnicy, idEgzemplarz, data_wyp, data_dk)VALUES('" + idCzytelnika + "','" + idEgzemplarz + "','" + dzisiaj + "','" + do_oddania + "');";
                                zap.Dodaj_pozycje(query);
                                //Blokuje Egzemplarz
                                query = "UPDATE Egzemplarz SET Dostep='Niedostępne' WHERE idEgzemplarz='" + idEgzemplarz + "';";
                                zap.Dodaj_pozycje(query);
                                if (DialogResult.Yes == MessageBox.Show("Czy Czytelnik ma jeszcze jakąś książkę do wypożyczenia", "Pytanie", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
                                {
                                    Gen_Tabel_3();
                                    textBox4.Clear();
                                }
                                else
                                {
                                    //Wykonjesz kod powrotu
                                    Gen_Tabel_3();
                                    Clear_wyp();
                                }
                            }

                        }
                        else

                        {
                            MessageBox.Show("Podanego Egzemplarza nie ma w bazie");
                            Clear_wyp();
                        }
                    }
                    else
                    {
                        MessageBox.Show("Podana książka już jest wypożyczona");
                        Clear_wyp();
                    }
                }
                else
                {
                    MessageBox.Show("Nie możesz wypożyczycz więcej niż jednego egzemplarza tej książki");
                    Clear_wyp();
                }
            }
            catch
            {
                MessageBox.Show("Nie można nie wpisywać niczego");
                Clear_wyp();

            }


        }

        private void button8_Click(object sender, EventArgs e)
        {
            try
            {
                string spr = "SELECT * FROM egzemplarz WHERE KodEan8=" + textBox5.Text + ";";
                if (zap.sprawdz(spr) == true)
                {
                    string query = "SELECT idEgzemplarz FROM egzemplarz WHERE KodEan8=" + textBox5.Text + ";";
                    int id_egzemplarz = zap.identyfikator(query);
                    query = "SELECT idwypozyczenia FROM wypozyczenie WHERE idCzytelnicy='" + idCzytelnika + "' AND idEgzemplarz='" + id_egzemplarz + "';";
                    int id_wyporzyczenia = zap.identyfikator(query);
                    DateTime data_oddania = zap.Data_Oddania(id_wyporzyczenia);
                    DateTime data_now = Convert.ToDateTime(DateTime.Now.ToShortDateString());
                    if (data_now > data_oddania)
                    {
                        TimeSpan ile_dni = data_now - data_oddania;
                        //MessageBox.Show(ile_dni.TotalDays.ToString());
                        //tu wstawisz kodzić dodający zadłużenia oraz blokujący konto czytelnika
                    }
                    else
                    {
                        query = "DELETE FROM wypozyczenie WHERE idwypozyczenia=" + id_wyporzyczenia;
                        zap.Dodaj_pozycje(query);
                        query = "UPDATE Egzemplarz SET Dostep='Dostępna' WHERE idEgzemplarz='" + id_egzemplarz + "';";
                        zap.Dodaj_pozycje(query);
                        Gen_Tabel_3();
                        if (DialogResult.Yes == MessageBox.Show("Czy czytelnik ma jeszcze jakieś książki do oddania", "Pyta", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
                        {
                            textBox5.Clear();
                        }
                        else
                        {
                            Clear_wyp();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                Clear_wyp();
            }
        }

        private void radioButton6_CheckedChanged_1(object sender, EventArgs e)
        {
            if (radioButton6.Checked == true)
            {
                //blokada pul
                radioButton6.Enabled = false;
                radioButton7.Enabled = false;
                groupBox10.Visible = false;
                groupBox9.Visible = true;
                //Spawdza czy czytelnik może wypożyczyć kolejną książkę
                string query = "SELECT value_c FROM config WHERE type_c='ik'";
                int ilosc_ksiazek_do_wyporzyczenia = zap.identyfikator(query);
                query = "SELECT count(idCzytelnicy) FROM wypozyczenie";
                int ilosc_ksizek_czytelnika = zap.identyfikator(query);
                if (ilosc_ksizek_czytelnika == ilosc_ksiazek_do_wyporzyczenia)
                {
                    MessageBox.Show("Czytelnik nie może wypożyczyć więcej książek");
                    //Wstaw kod powrotu
                    Clear_wyp();
                }
            }
        }
        private void radioButton7_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton7.Checked == true)
            {
                radioButton6.Enabled = false;
                radioButton7.Enabled = false;
                groupBox9.Visible = false;
                groupBox10.Visible = true;
            }
        }
        public void Clear_wyp()
        {
            textBox3.Clear();
            textBox4.Clear();
            textBox5.Clear();
            textBox3.Enabled = true;
            wykonaj.Enabled = true;
            radioButton6.Visible = false;
            radioButton7.Visible = false;
            radioButton6.Checked = false;
            radioButton7.Checked = false;
            radioButton6.Enabled = true;
            radioButton7.Enabled = true;
            groupBox10.Visible = false;
            groupBox9.Visible = false;
        }
    }
}
